;;;; init-modes  -  Description and Setup of some modes in Emacs
;;;;
;;;;  Evgeniy Sharapov, evgeniy.sharapov@gmail.com 
;;;;
;;;;

;;;;;;;;;;;;;;;;;;;;;;  Text Mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-hook 'text-mode-hook '(lambda ()
                             (flyspell-mode 1)))

;;;;;;;;;;;;;;;;;;;;;;;  AsciiDoc  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(autoload 'doc-mode "doc-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.\\(ascii\\|doc\\)$" . doc-mode))
(add-hook 'doc-mode-hook
          '(lambda ()
             (turn-on-auto-fill)
             (require 'asciidoc)
             (flyspell-mode 1)))

;;;;;;;;;;;;;;;;;;;;;;;  AutoHotkey  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq ahk-syntax-directory "C:/Program Files/AutoHotkey/Extras/Editors/Syntax/")
(add-to-list 'auto-mode-alist '("\\.ahk$" . ahk-mode))
(autoload 'ahk-mode "ahk-mode")
 
;;;;;;;;;;;;;;;;;;;;;;;  Markdown  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(autoload 'markdown-mode "markdown-mode.el"
  "Major mode for editing Markdown files" t)
(setq auto-mode-alist
      (cons '("\\.\\(text\\|md\\|mdn\\|markdown\\)$" . markdown-mode) auto-mode-alist))
(setq markdown-command "pandoc")

;;;;;;;;;;;;;;;;;;;;;;;  GraphViz  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-to-list `auto-mode-alist `("\\.dot$" . graphviz-dot-mode))
(autoload 'graphviz-dot-mode "graphviz-dot-mode" nil t)

;;;;;;;;;;;;;;;;;;;;;;  OCaml  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq auto-mode-alist (cons '("\\.ml\\w?" . tuareg-mode) auto-mode-alist))
(autoload 'tuareg-mode "tuareg" "Major mode for editing Caml code" t)
(autoload 'camldebug "camldebug" "Run the Caml debugger" t)

;;;;;;;;;;;;;;;;;;;;;;  Lisp  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(when (require 'slime nil t)
  '(progn 
     (setq inferior-lisp-program (concat  loc-sbcl "/"  "sbcl.exe"))
     (slime-setup)))

;;;;;;;;;;;;;;;;;;;;;;  Scheme  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
(autoload 'scheme-mode "cmuscheme" "Major mode for Scheme." t)
(autoload 'run-scheme "cmuscheme" "Switch to interactive Scheme buffer." t)
(setq auto-mode-alist (cons '("\\.ss" . scheme-mode) auto-mode-alist))

;;;;;;;;;;;;;;;;;;;;;;  Scala  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'scala-mode-auto)
(add-hook 'scala-mode-hook '(lambda () 
                              (yas/minor-mode-auto-on)))

;;;;;;;;;;;;;;;;;;;;;;  Visual Basic  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(autoload 'visual-basic-mode "visual-basic-mode" "Visual Basic mode." t)
(setq auto-mode-alist (append '(("\\.\\(frm\\|bas\\|cls\\)$" .
                                 visual-basic-mode)) auto-mode-alist))

;;;;;;;;;;;;;;;;;;;;;; JavaScript ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(autoload 'js2-mode "js2" nil t)
(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))

(provide 'init-modes)